package com.spring.springbootmodel.common;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 作者：黄龙华
 * 功能：接口统一返回包装类
 * 日期：2023/11/2 17:43
 */
@Data   //自动创建get和set方法
@AllArgsConstructor //创建全部属性的构造函数
@NoArgsConstructor  //创建无参构造函数
@Builder    //构建者模式
public class Result {
    public static final String CODE_SUCCESS = "200";
    public static final String CODE_AUTH_ERROR = "401";
    public static final String CODE_SYS_ERROR = "500";

    /*
     * 请求返回的编码 200 401 404 500
     * 编码表示这次请求是成功还是失败
     * 可以看出失败的类型是什么
     * */
    public String code;
    /*
     * msg表示错误的详细信息
     * */
    public String msg;
    /*
     * 数据从什么地方返回出去
     * 就是这个data
     * User Object类型就是User
     * List Object类型就是List
     * Map  Object类型就是Map
     * */
    public Object data;

    public static Result success() {
        /*
         * .build()默认就是null
         * 这两句的意思一样
         * builder：构建者模式，使用链式来构建对象
         * 比new更易读
         * */
        return Result.builder().code(CODE_SUCCESS).msg("请求成功").build();
//        return new Result(CODE_SUCCESS, "请求成功", null);
    }

    public static Result success(Object data) {
        return Result.builder().code(CODE_SUCCESS).msg("请求成功").data(data).build();
//        return new Result(CODE_SUCCESS, "请求成功", data);
    }

    public static Result error(String msg) {
        return Result.builder().code(CODE_SYS_ERROR).msg(msg).build();
    }

    public static Result error(String code, String msg) {
        return Result.builder().code(code).msg(msg).build();
//        return new Result(CODE_SYS_ERROR, msg, null);
    }

    public static Result error() {
        return Result.builder().code(CODE_SYS_ERROR).msg("系统错误").build();
    }


}